/*
  字符串弱等于
  题目描述
    给你两个等长，且长度一定可以用 2^k（k 是小于等于 5 的非负整数）表示的全小写字母字符串，
    现在你需要判断这两个字符串是否满足 "弱等于" 关系。
    两个字符串 S, T 满足弱等于关系，当且仅当满足下面的条件的至少一个：
      1). S 和 T 完全相同。
      2). S 的前半段弱等于 T 的前半段，S 的后半段弱等于 T 的后半段。
      3). S 的前半段弱等于 T 的后半段，S 的后半段弱等于 T 的前半段。
    例如，字符串 aabb 和 bbaa 不相等，但是满足弱等于关系。
  输入格式
    输入共 3 行。
    第一行为整数 k。
    第二行和第三行分别为一个长度是 2^k 的全小写字母串。
  输出格式
    如果两个字符串完全相等，输出 Equal。
    如果两个字符串不完全相等，但是满足弱等于关系，输出 Weakly Equal。
    如果两个字符串不满足弱等于关系，输出 Oh No。
  输入数据 1
    2
    abcb
    bcba
  输出数据 1
    Weakly Equal
  输入数据 2
    2
    aabb
    aabb
  输出数据 2
    Equal
  输入数据 3
    2
    aacc
    aabb
  输出数据 3
    Oh No
*/

#include <bits/stdc++.h>

using namespace std;

/*
  使用分治的方法判断 string a 是否 "弱等于" sring b
  注意: 使用分治的方法进行编码时，通常会用到递归!
*/
bool cmp(string a, string b) {
    if (a == b) {
        return true;
    }

    if (a.size() == 1) {
        return false;
    }

    int len = a.size();
    /*
      注意:
        string 的 .substr(pos, len) 表示：获取从 string[pos] 开始长度为 len 的子字符串
        string 的 .substr(pos)      表示：获取从 string[pos] 开始长度到 string 结尾 的子字符串
     */
    string s1 = a.substr(0, len / 2);
    string s2 = a.substr(len / 2);
    string x1 = b.substr(0, len / 2);
    string x2 = b.substr(len / 2);
    return (cmp(s1, x1) && cmp(s2, x2)) ||
           (cmp(s1, x2) && cmp(s2, x1));
}

int main() {
    int k;
    string a, b;

    cin >> k;
    cin >> a >> b;
    if (a == b) {
        cout << "Equal";
    } else if (cmp(a, b)) {
        cout << "Weakly Equal";
    } else {
        cout << "Oh No";
    }

    return 0;
}